// [\u4e00-\u9fa5] 中文验证规则

Page({
  data: {
    // 身份证正面
    idcardFrontUrl: '',
    // 身份证反面
    idcardBackUrl: '',
    // 社区名称
    point: '',
    // 栋/号楼
    building: '',
    // 房间号
    room: '',
    // 业主名字
    name: '',
    // 业主性别
    gender: 1,
    // 业主电话
    mobile: '',
  },
  onLoad({ point, building, room, id }) {
    if (id) {
      // 编辑房屋
      // 1. 修改页面的标题
      wx.setNavigationBarTitle({
        title: '修改房屋信息',
      })
      // 2. 基于id获取房屋数据 - 进行渲染
      this.getHouseDetail(id)
    } else {
      // 添加房屋
      // 获取并记录地址参数
      this.setData({ point, building, room })
    }
  },
  // 获取房屋信息 - 修改房屋
  async getHouseDetail(id) {
    if (!id) return wx.utils.toast('请传入正确的房屋id')
    const { code, data: houseDetail } = await wx.http.get(`/room/${id}`)
    if (code !== 10000) return wx.utils.toast()
    this.setData({
      ...houseDetail,
    })
  },
  // 姓名校验
  verifyName() {
    // [\u4e00-\u9fa5] 中文验证规则
    const reg = /^[\u4e00-\u9fa5]{2,5}$/
    const valid = reg.test(this.data.name)
    if (!valid) wx.utils.toast('请输入正确的业主姓名')
    return valid
  },
  // 手机号校验
  verifyMobile() {
    const reg = /^1[3-9]\d{9}$/
    const valid = reg.test(this.data.mobile)
    if (!valid) wx.utils.toast('请输入正确的手机号')
    return valid
  },
  // 身份证照片校验
  verifyIdCard() {
    const valid = !!this.data.idcardFrontUrl && !!this.data.idcardBackUrl
    if (!valid) wx.utils.toast('请上传身份证照片')
    return valid
  },
  // 上传身份证照片
  async uploadIdCard(ev) {
    const type = ev.mark.type
    console.log(type)
    const media = await wx.chooseMedia({
      count: 1, // 上传选择的张数
      mediaType: ['image'], // 媒体类型
      sizeType: ['compressed'], // 是否压缩照片
    })
    const {
      code,
      data: { url },
    } = await wx.http.upload('/upload', {
      name: 'file', // 文件的 key
      filePath: media.tempFiles[0].tempFilePath, // 临时图片地址
    })
    if (code !== 10000) return wx.utils.toast('上传身份证照片失败...')
    this.setData({
      [type]: url,
    })
  },
  // 提交审核
  async submitForm() {
    // 针对于姓名, 手机号, 身份证照片依次进行校验
    if (!this.verifyName()) return
    if (!this.verifyMobile()) return
    if (!this.verifyIdCard()) return
    console.log('通过校验了', this.data)

    // 删除对象中的某个属性
    delete this.data.__webviewId__
    delete this.data.status
    const { code, data } = await wx.http.post('/room', this.data)
    if (code !== 10000) return wx.utils.toast('添加房屋信息失败')
    wx.navigateBack({
      delta: this.data.id ? 2 : 4, // 返回二 or 四 步
    })
  },
  removePicture(ev) {
    console.log(ev)
    // 移除图片的类型（身份证正面或反面）
    const type = ev.mark?.type
    // [] 可以解析变量
    // const obj = { name: 'zs' }
    // const userName = 'name'
    // obj.userName 错误
    // obj[userName] 正确
    this.setData({ [type]: '' })
  },
})
